package factorymethod.example;

/**
 * 工厂方法模式 ：
 * 简单工厂模式的进一步抽象与推广
 * 定义一个用于创建对象的接口，让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到子类
 *
 * 与简单工厂的区别所在：
 * 简单工厂最大的优点在于工厂类中包含了必要的逻辑判断，
 * 根据客户端的选择条件动态实例化相关的类，对于客户端来说去除了与具体产品依赖
 *
 * 但也存在一个缺点，需要加入增加新的功能时，
 * 则必须给工厂类的逻辑判断增加新的分支，这样子违背了open-close原则。工厂方法就是解决这个问题
 *
 * 但同时，工厂方法要求客户端来决定调用哪一个工厂，还是存在选择判断的问题
 * @author chen guang
 */
public interface IFactory {
    Operation createOperation();
}
